﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OAuth
{
    public interface IOAuthMode
    {
        /// <summary>
        /// 设置回调地址
        /// </summary>
        /// <param name="CallBackURL"></param>
        void SetOAuthCallBack(Uri CallBackURL);

        /// <summary>
        /// 得到回调地址
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthCallBack();

        /// <summary>
        /// 得到申请的ConsumerKey
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthConsumerKey();

        /// <summary>
        /// 设置随机字符串
        /// </summary>
        /// <param name="OAuthNoncd"></param>
        void SetOAuthNonce(string OAuthNonceString);

        /// <summary>
        /// 得到随机字符串
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthNonce();

        /// <summary>
        /// 得到签名方式
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthSignatureMethod();

        /// <summary>
        /// 设置时间戳
        /// </summary>
        /// <param name="OAuthTimeStamp"></param>
        void SetOAuthTimeStamp(string OAuthTimeStampString);

        /// <summary>
        /// 得到时间戳
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthTimeStamp();

        /// <summary>
        /// 得到OAuth版本
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthVersion();

        /// <summary>
        /// 设置签名字符串
        /// </summary>
        void SetOAuthSignature(string OAuthSignatureString);

        /// <summary>
        /// 得到签名字符串
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthSignature();

        /// <summary>
        /// 设置OAuthToken
        /// </summary>
        void SetOAuthToken(OAuthParameter OAuthToken);

        /// <summary>
        /// 得到OAuthToken
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthToken();

        /// <summary>
        /// 设置OAuthTokenSecret
        /// </summary>
        void SetOAuthTokenSecret(OAuthParameter OAuthTokenSecret);

        /// <summary>
        /// 得到OAuthTokenSecret
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthTokenSecret();

        /// <summary>
        /// 设置OAuthVerifier
        /// </summary>
        /// <param name="OAuthVerifier"></param>
        void SetOAuthVerifier(OAuthParameter OAuthVerifier);

        /// <summary>
        /// 得到OAuthVerifier
        /// </summary>
        /// <returns></returns>
        OAuthParameter GetOAuthVerifier();

        /// <summary>
        /// 得到接口提供商
        /// </summary>
        /// <returns></returns>
        OAuthEnum.OAuthInterface GetOAuthInterface();
    }
}
